package com.zenithmind.library.pojo.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Positive;
import jakarta.validation.constraints.Size;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 罚金记录更新DTO
 * 
 * @author ZenithMind
 * @since 2024-06-14
 */
@Data
@Schema(name = "罚金记录更新DTO", description = "更新罚金记录时的数据传输对象")
public class FineRecordUpdateDTO {

    @Schema(description = "罚金类型 (1-逾期罚金, 2-损坏赔偿, 3-丢失赔偿)", example = "1")
    private Integer fineType;

    @Positive(message = "罚金金额必须大于0")
    @Schema(description = "罚金金额", example = "10.00")
    private BigDecimal fineAmount;

    @Positive(message = "已支付金额必须大于0")
    @Schema(description = "已支付金额", example = "5.00")
    private BigDecimal paidAmount;

    @Schema(description = "支付状态 (0-未支付, 1-已支付, 2-部分支付)", example = "1")
    private Integer paymentStatus;

    @Size(max = 50, message = "支付方式长度不能超过50个字符")
    @Schema(description = "支付方式", example = "支付宝")
    private String paymentMethod;

    @Schema(description = "支付时间", example = "2024-06-14T10:30:00")
    private LocalDateTime paymentTime;

    @Size(max = 100, message = "支付凭证号长度不能超过100个字符")
    @Schema(description = "支付凭证号", example = "PAY202406141030001")
    private String paymentReference;

    @Size(max = 500, message = "罚金说明长度不能超过500个字符")
    @Schema(description = "罚金说明", example = "图书逾期3天")
    private String description;

    @Schema(description = "操作员ID", example = "admin")
    private String operatorId;
}
